package com.ai.manager.edu.cms.user;

import java.util.List;

import com.ai.model.edu.cms.backoperator.OperatorRole;
import com.ai.model.edu.cms.backoperator.dto.OperatorRoleDTO;
import com.ai.model.edu.cms.backoperator.vo.OperatorCountVO;
import com.ai.model.edu.cms.backoperator.vo.OperatorRoleVO;

/**
 * Class Name : UserRoleManager<br>
 * 
 * Description : 用户角色关系manager接口<br>
 * 
 * @author yangwb
 * @version $Revision$
 * @see
 *
 */
public interface OperatorRoleManager {
    /**
     * Description ： 根据dto查询用户角色关系<br>
     * 
     * yangwb
     * 
     * @param userRoleDTO
     * @return
     * @since
     * 
     */
    public List<OperatorRoleVO> findUserRoleVOsByDTO(OperatorRoleDTO userRoleDTO);

    /**
     * Description ： 批量新增角色/用户关系
     * 
     * nyj
     * 
     * @param userRoles
     * @since
     *
     */
    public void addUserRoleBatch(List<OperatorRole> userRoles);

    /**
     * Description ： 根据backendOperatorId删除用户角色关系<br>
     * 
     * yangwb
     * 
     * @param backendOperatorId
     * @return
     * @since
     *
     */
    public int deleteUserRoleByBackOperatorId(Long backOperatorId);

    /**
     * Description ：新增角色角色用户关系
     * 
     * yangwb
     * 
     * @param OperatorRole operatorRole
     * @return
     * @since
     *
     */
    public void insert(OperatorRole operatorRole);

    /**
     * Description ：根据ID删除
     * 
     * yangwb
     * 
     * @param Long id
     * @return
     * @since
     *
     */
    public void deleteById(Long id);

    /**
     * Description ： 根据用户ID和角色ID删除用户角色关系
     * 
     * nyj
     * 
     * @param roleId
     * @param backOperatorIds
     * @return
     * @since
     *
     */
    public int deleteOperatorRoleByRoleIdAndOperatorId(Long roleId, List<Long> operatorIds);

    /**
     * Description ：根据用户id 和角色ids 删除关系<br>
     * 
     * yangwb
     * 
     * @param backOperatorId
     * @param roleIds
     * @return
     * @since
     * 
     */
    public int removeOperatorRoleByRoleIdsAndOperatorId(Long backOperatorId, List<Long> roleIds);

    /**
     * Description ： 根据角色统计用户数量
     * 
     * nyj
     * 
     * @param roleId
     * @return
     * @since
     *
     */
    public List<OperatorCountVO> countOperatorByRoleIds(List<Long> roleIds);

    /**
     * Description ： 根据角色ID删除用户角色关系
     * 
     * nyj
     * 
     * @param roleId
     * @return
     * @since
     *
     */
    public Integer deleteOperatorRoleByRoleId(Long roleId);

    /**
     * Description ： 根据主键id 查询用户角色关系<br>
     * 
     * yangwb
     * 
     * @param id
     * @return
     * @since
     *
     */
    public OperatorRoleVO selectByPrimaryKey(Long id);
}
